# python中的协程
# 协程是在线程中的
"""
一、协程的相关概念
如果都用多线程，那么在高并发下，cpu发部分时间都将用于切换线程上下文，二而且线程的切换是内核胎完成的，
会耗费额外的空间和时间，浪费了很多CPU 的时间片段。

协程（coroutine）,又成为微线程，纤程。（协程是一种用户态的轻量级线程）

可以理解为一种在线程里跑的子线程它默认栈空间很小。当多个协程在一个线程上运行时，
协程间会切换着运行，协程的切换完全在用户态完成，而且时机由程序员来自行调度，从而使得线程的并发量大大提升。


简单的说：
协程的核心思想就在于执行者对控制流的“主动让出”和“恢复”。相对于，线程此类的“抢占式调度”而言，
协程是一种“协作式调度”方式，协程之间执行任务按照一定顺序交替执行。

不过协程只适用于IO密集型程序（大部分时间在等待），对于计算密集型程序，协程的优势并不大，
因为没有给它切换的时间，CPU大部分时间都在工作。
"""

"""
二、定义协程
asyncio库 是用来编写 协程 代码的库，使用async/await语法，被用作多个提供高性能python异步框架的基础，包括网络和网站服务，
数据库连接，分布式任务队列等。

async关键字定义的函数就是异步函数，也可以理解为：定义一个协程。
调用异步函数：add2(1);
异步函数的实例化对象就是一个协程。
"""